package com.yxuan.springboot.constant.config;



import com.yxuan.springboot.intercepter.SysInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
  * @className: WebAppConfigurer.java
  * @methodName:  WebAppConfigurer
  * @effect: 拦截配置--调用链
  * @author: JingxuanFan
  * @date: 2023/3/19 17:57
  **/
// 使用 @Configuration 注解的类就可以被 Spring 识别为配置类，并处理该类上的相关功能注解
//@Configuration
public class WebAppConfigurer extends WebMvcConfigurerAdapter {

    //将sysInterceptor拦截器对象注入进来
    @Autowired
    private SysInterceptor sysInterceptor;
    /**
     * 配置不需要拦截和需要拦截的请求
     * @param registry
     */
    //@Override 注解是用来指定方法重写的，只能修饰方法并且只能用于方法重写，不能修饰其它的元素。它可以强制一个子类必须重写父类方法或者实现接口的方法。
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加不拦截的方法（登入，注册）
        String[] patterns = new String[] {"/userlogin/*" ,"/adminlogin/*",//用户注册是查询用户是否存在
                                 "/testrecords/*" };  // 注册的方法
        //在WebAppConfigure类中，是new出来的sysInterceptor对象，因此不会触发spring的自动注入，导致空指针异常。
        // registry.addInterceptor(new SysInterceptor())
        registry.addInterceptor(sysInterceptor)
                .addPathPatterns("/**")  //先拦截所有方法
                .excludePathPatterns(patterns);  //在拦截的方法中剔除掉 patterns 中的方法（不拦截）
    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //和页面有关的静态目录都放在项目的static目录下
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        //上传的图片在D盘下的image目录下，访问路径如：http://localhost:8082/image/100942.jpg
        //其中image表示访问的前缀。"file:D:/image/"是文件真实的存储路径
        //registry.addResourceHandler("/root/javao/qrpictures/**").addResourceLocations("file:/root/javao/qrpictures/");
    }

}